Newer
Older
pixi.js / examples / example 16 - Displacement / index.html
@Mat Groves Mat Groves on 1 Nov 2013 5 KB Filter Tweaks
<!DOCTYPE HTML>
<html>
<head>
	<title>pixi.js example 15 - Filters</title>
	<style>
		body {
			margin: 0;
			padding: 0;
			background-color: #000000;
		}
	</style>
	
	<script src="../../bin/pixi.dev.js"></script>
	<script src="../../src/pixi/filters/DisplacementFilter.js"></script>
	<script src="../../src/pixi/renderers/webgl/WebGLRenderGroup.js"></script>
	<script src="../../src/pixi/renderers/webgl/PixiShader.js"></script>
	<script src="../../src/pixi/renderers/webgl/WebGLShaders.js"></script>
	<script src="../../src/pixi/renderers/webgl/filters/Filter.js"></script>
	<script src="../../src/pixi/renderers/webgl/filters/FilterManager.js"></script>
	<script src="../../src/pixi/filters/InvertFilter.js"></script>
	<script src="../../src/pixi/filters/SepiaFilter.js"></script>
	<script src="../../src/pixi/filters/BlurXFilter.js"></script>
	<script src="../../src/pixi/filters/BlurFilter.js"></script>
	<script src="../../src/pixi/filters/BlurYFilter.js"></script>
	<script src="../../src/pixi/filters/SmartBlurFilter.js"></script>
	<script src="../../src/pixi/filters/PixelateFilter.js"></script>
</head>
<body>
	<script>
	
	var renderer = PIXI.autoDetectRenderer(800, 600);
	
	
	var f2 = new PIXI.BlurFilter()//new PIXI.Filter();
	var f = new PIXI.GreyFilter()//new PIXI.Filter();
	var blurX = new PIXI.BlurXFilter()//new PIXI.Filter();
	var blurY = new PIXI.BlurYFilter();
	var smart = new PIXI.PixelateFilter();

	var blur = new PIXI.BlurFilter();

	// create an new instance of a pixi stage
	var stage = new PIXI.Stage(0xFFFFFF, true);
	
	stage.interactive = true;
	
	var bg = PIXI.Sprite.fromImage("BGrotate.jpg");
	bg.anchor.x = 0.5;
	bg.anchor.y = 0.5;
	 
	bg.position.x = 800/2;
	bg.position.y = 600/2;
	

	var colorMatrix =  [1,0,0,0,
						0,1,0,0,
						0,0,1,0,
						0,0,0,1];
						
	
	var mapTexture = new PIXI.RenderTexture(800, 600);

	
	var container = new PIXI.DisplayObjectContainer();
	container.position.x = 800/2;
	container.position.y = 600/2;
	
	var bgFront = PIXI.Sprite.fromImage("SceneRotate.jpg");
	bgFront.anchor.x = 0.5;
	bgFront.anchor.y = 0.5;
	bgFront.filters = [f2]//, blurY];
	//smart

	var filter = new PIXI.DisplacementFilter(PIXI.Texture.fromImage("SceneRotate.jpg"));
	

	stage.addChild(bgFront);
	bgFront.position.x = 800/2;
	bgFront.position.y = 600/2;
	bgFront.scale.y = 0.3;
	var light2 = PIXI.Sprite.fromImage("LightRotate2.png");
	light2.anchor.x = 0.5;
	light2.anchor.y = 0.5;
	container.addChild(light2);
	
	var light1 = PIXI.Sprite.fromImage("LightRotate1.png");
	light1.anchor.x = 0.5;
	light1.anchor.y = 0.5;
	container.addChild(light1);
	
	var panda =  PIXI.Sprite.fromImage("panda.png");
	panda.anchor.x = 0.5;
	panda.anchor.y = 0.5;
	
	
	container.addChild(panda);
	
	stage.addChild(container);
	
	// create a renderer instance
	
	renderer.view.style.position = "absolute"
	//renderer.view.style.width = window.innerWidth + "px";
	//renderer.view.style.height = window.innerHeight + "px";
	renderer.view.style.display = "block";
	
	// add render view to DOM
	document.body.appendChild(renderer.view);
	
	//container.filterArea = new PIXI.Rectangle(0,0,800, 600);
	//container.filters = [smart]//f, f2];
	
	//panda.filters = [f2];
	panda.filters = [filter]//,f2]
	var count = 0;
	var switchy = false;
	
	stage.click = stage.tap = function()
	{
		switchy = !switchy
		
		if(!switchy)
		{
			container.filters = [smart];//
		//	container.filters = [filter]//,blurX, blurY];
		}
		else
		{
			container.filters = null//.. [filter];
	//		container.filters = null;
		}
		
		//PIXI.runList(stage);	
	}


	/*
	 * Add a pixi Logo!
	 */
	var logo = PIXI.Sprite.fromImage("../../logo_small.png");
//	stage.addChild(logo);
	
	logo.anchor.x = 1;
	logo.position.x = 620
	logo.scale.x = logo.scale.y = 0.5;
	logo.position.y = 320;
	logo.interactive = true;
	logo.buttonMode = true;
	
	logo.click = logo.tap = function()
	{
		window.open("https://github.com/GoodBoyDigital/pixi.js", "_blank");
	}
	
	var help = new PIXI.Text("Click to turn filters on / off.", {font:"bold 12pt Arial", fill:"white"});
	help.position.y = 600 - 20;
	help.position.x = 10;
	stage.addChild(help);
	
	//stage.filters = [filter];
	//stage.addChild(new PIXI.Sprite(mapTexture))
		
	//PIXI.runList(stage);
	
	requestAnimFrame(animate);
	
	var position = new PIXI.Point(0, 0);
	
	var pixelSize = new PIXI.Point(2,2);
	smart.size = pixelSize;

	function animate() {
		
		mapTexture.render(panda, position, true);
		
	
	//	filter.scale.x = Math.sin(count) * 100;
	//filter.scale.y = Math.cos(count) * 100;
		panda.rotation += 0.01;
	//	bgFront.rotation -= 0.01;
		
		light1.rotation += 0.02;
		light2.rotation += 0.01;

		panda.scale.x = 1+ Math.sin(count * 0.1) * 0.4;
		panda.scale.y = (1 + Math.cos(count * 0.1) * 0.4) //* 0.2;
		panda.position.x = count;
		count += 0.1;
		pixelSize.x = 20 + Math.sin(count * 0.1) * 20;
		pixelSize.y = 20 + Math.sin(count * 0.1) * 20;

		var val = 16;
		f2.blur = 16// * val//  0.5 * 0.5//Math.sin(count) * 1/512//128// * 2;
		bgFront.scale.y = 0.5 //+ Math.sin(count * 0.1) * 0.4;
		bgFront.scale.x = 0.5 //+ Math.sin(count * 0.2) * 0.4;


	//	blurY.blur = Math.cos(count)  * 1/128;
	//	filter.matrix = colorMatrix;
		
		f.grey = Math.sin(count) 

	    renderer.render(stage);
	 //  f.renderTex();
	   // f.render();
	    
	    requestAnimFrame( animate );
	}

	</script>

	</body>
</html>